home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 1998 November / IRIX 6.5.2 Base Documentation November 1998.img / usr / share / catman / p_man / cat3 / complib / cunmbr.z / cunmbr
Text File  |  1998-10-30  |  5KB  |  133 lines

  1.  
  2.  
  3.  
  4. CCCCUUUUNNNNMMMMBBBBRRRR((((3333FFFF))))                                                          CCCCUUUUNNNNMMMMBBBBRRRR((((3333FFFF))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      CUNMBR - VECT = 'Q', CUNMBR overwrites the general complex M-by-N matrix
  10.      C with  SIDE = 'L' SIDE = 'R' TRANS = 'N'
  11.  
  12. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  13.      SUBROUTINE CUNMBR( VECT, SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK,
  14.                         LWORK, INFO )
  15.  
  16.          CHARACTER      SIDE, TRANS, VECT
  17.  
  18.          INTEGER        INFO, K, LDA, LDC, LWORK, M, N
  19.  
  20.          COMPLEX        A( LDA, * ), C( LDC, * ), TAU( * ), WORK( LWORK )
  21.  
  22. PPPPUUUURRRRPPPPOOOOSSSSEEEE
  23.      If VECT = 'Q', CUNMBR overwrites the general complex M-by-N matrix C with
  24.                      SIDE = 'L'     SIDE = 'R' TRANS = 'N':      Q * C
  25.      C * Q TRANS = 'C':      Q**H * C       C * Q**H
  26.  
  27.      If VECT = 'P', CUNMBR overwrites the general complex M-by-N matrix C with
  28.                      SIDE = 'L'     SIDE = 'R'
  29.      TRANS = 'N':      P * C          C * P
  30.      TRANS = 'C':      P**H * C       C * P**H
  31.  
  32.      Here Q and P**H are the unitary matrices determined by CGEBRD when
  33.      reducing a complex matrix A to bidiagonal form: A = Q * B * P**H. Q and
  34.      P**H are defined as products of elementary reflectors H(i) and G(i)
  35.      respectively.
  36.  
  37.      Let nq = m if SIDE = 'L' and nq = n if SIDE = 'R'. Thus nq is the order
  38.      of the unitary matrix Q or P**H that is applied.
  39.  
  40.      If VECT = 'Q', A is assumed to have been an NQ-by-K matrix:  if nq >= k,
  41.      Q = H(1) H(2) . . . H(k);
  42.      if nq < k, Q = H(1) H(2) . . . H(nq-1).
  43.  
  44.      If VECT = 'P', A is assumed to have been a K-by-NQ matrix:  if k < nq, P
  45.      = G(1) G(2) . . . G(k);
  46.      if k >= nq, P = G(1) G(2) . . . G(nq-1).
  47.  
  48.  
  49. AAAARRRRGGGGUUUUMMMMEEEENNNNTTTTSSSS
  50.      VECT    (input) CHARACTER*1
  51.              = 'Q': apply Q or Q**H;
  52.              = 'P': apply P or P**H.
  53.  
  54.      SIDE    (input) CHARACTER*1
  55.              = 'L': apply Q, Q**H, P or P**H from the Left;
  56.              = 'R': apply Q, Q**H, P or P**H from the Right.
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. CCCCUUUUNNNNMMMMBBBBRRRR((((3333FFFF))))                                                          CCCCUUUUNNNNMMMMBBBBRRRR((((3333FFFF))))
  71.  
  72.  
  73.  
  74.      TRANS   (input) CHARACTER*1
  75.              = 'N':  No transpose, apply Q or P;
  76.              = 'C':  Conjugate transpose, apply Q**H or P**H.
  77.  
  78.      M       (input) INTEGER
  79.              The number of rows of the matrix C. M >= 0.
  80.  
  81.      N       (input) INTEGER
  82.              The number of columns of the matrix C. N >= 0.
  83.  
  84.      K       (input) INTEGER
  85.              If VECT = 'Q', the number of columns in the original matrix
  86.              reduced by CGEBRD.  If VECT = 'P', the number of rows in the
  87.              original matrix reduced by CGEBRD.  K >= 0.
  88.  
  89.      A       (input) COMPLEX array, dimension
  90.              (LDA,min(nq,K)) if VECT = 'Q' (LDA,nq)        if VECT = 'P' The
  91.              vectors which define the elementary reflectors H(i) and G(i),
  92.              whose products determine the matrices Q and P, as returned by
  93.              CGEBRD.
  94.  
  95.      LDA     (input) INTEGER
  96.              The leading dimension of the array A.  If VECT = 'Q', LDA >=
  97.              max(1,nq); if VECT = 'P', LDA >= max(1,min(nq,K)).
  98.  
  99.      TAU     (input) COMPLEX array, dimension (min(nq,K))
  100.              TAU(i) must contain the scalar factor of the elementary reflector
  101.              H(i) or G(i) which determines Q or P, as returned by CGEBRD in
  102.              the array argument TAUQ or TAUP.
  103.  
  104.      C       (input/output) COMPLEX array, dimension (LDC,N)
  105.              On entry, the M-by-N matrix C.  On exit, C is overwritten by Q*C
  106.              or Q**H*C or C*Q**H or C*Q or P*C or P**H*C or C*P or C*P**H.
  107.  
  108.      LDC     (input) INTEGER
  109.              The leading dimension of the array C. LDC >= max(1,M).
  110.  
  111.      WORK    (workspace/output) COMPLEX array, dimension (LWORK)
  112.              On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
  113.  
  114.      LWORK   (input) INTEGER
  115.              The dimension of the array WORK.  If SIDE = 'L', LWORK >=
  116.              max(1,N); if SIDE = 'R', LWORK >= max(1,M).  For optimum
  117.              performance LWORK >= N*NB if SIDE = 'L', and LWORK >= M*NB if
  118.              SIDE = 'R', where NB is the optimal blocksize.
  119.  
  120.      INFO    (output) INTEGER
  121.              = 0:  successful exit
  122.              < 0:  if INFO = -i, the i-th argument had an illegal value
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.